1. Field
The present disclosure relates generally to digital communication systems, and more particularly, to apparatus and methods for supplying random numbers to a processing system.
2. Background
Random numbers are used extensively in communications systems, security and encryption, simulation and gaming, and in other applications. Random numbers are commonly obtained using a hardware random number generator (RNG), which generates a sequence of numbers that appear to be uncorrelated or to have no apparent pattern. RNGs are implemented in hardware to improve throughput, particularly in applications such as simulation and gaming which make frequent use of random numbers. RNGs are also used in order to reduce the processing overhead required to generate random numbers and to minimize latency, which may be measured as the time between requesting and receiving a random number.
RNGs typically generate pseudorandom numbers that are correlated to some degree, and are therefore not completely unpredictable. Entropy measurements may be used to quantify quality of randomness of a random number. Modern RNGs may yield 8 bits of real entropy for 10 bits generated (an entropy rate of 0.8), which is generally less than entropy rates required by computing systems.
Some systems condition low-entropy numbers generated by an RNG using a cryptographic function to obtain random numbers with significantly higher entropy. Conventional systems include cryptographic functions logic circuits in the RNG to permit random numbers to be generated quickly, asynchronously and with low response latency. The addition of cryptographic functions can significantly increase the complexity of the RNG hardware, causing increased usage of integrated circuit area and increased power consumption.
Consequently, there is a need for a high throughput, low-latency RNG that occupies less die area and consumes less system power.